using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Marlimer.Common;
using Marlimer.Common.EntidadesGrilla;
using Marlimer.Common.Entidades;

namespace Marlimer.Data.Comercial
{
    public class com_Ruta
    {
        public DataTable getDTRuta()
        {
            SqlCommand sqlcmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter();
            DataSet ds = new DataSet();

            sqlcmd.CommandText = "spsdtRuta";
            sqlcmd.CommandType = CommandType.StoredProcedure;
            sqlcmd.Connection = Session.getConexion();

            da.SelectCommand = sqlcmd;
            da.Fill(ds);
            return ds.Tables[0];
        }

        public DataTable mostrarObjetivosRuta(int nanio, object nmes, int ccod_grpvta, int ccod_zona)
        {
            SqlCommand sqlcmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter();
            DataSet ds = new DataSet();

            sqlcmd.CommandText = "spsMostrarObjetivoRutas";
            sqlcmd.CommandType = CommandType.StoredProcedure;
            sqlcmd.Connection = Session.getConexion();

            sqlcmd.Parameters.Add("@nanio", SqlDbType.Int);
            sqlcmd.Parameters.Add("@nmes", SqlDbType.Int);
            sqlcmd.Parameters.Add("@ccod_grpvta", SqlDbType.Int);
            sqlcmd.Parameters.Add("@ccod_zona", SqlDbType.Int);
            sqlcmd.Parameters.Add("@cpc_crea", SqlDbType.NVarChar, 50);
            sqlcmd.Parameters.Add("@cuser_crea", SqlDbType.Int);

            sqlcmd.Parameters["@nanio"].Value = nanio;
            sqlcmd.Parameters["@nmes"].Value = nmes;
            sqlcmd.Parameters["@ccod_grpvta"].Value = ccod_grpvta;
            sqlcmd.Parameters["@ccod_zona"].Value = ccod_zona;
            sqlcmd.Parameters["@cpc_crea"].Value = Session.getComputerName();
            sqlcmd.Parameters["@cuser_crea"].Value = Session.getInfousuario().ccod_user;

            da.SelectCommand = sqlcmd;
            da.Fill(ds);
            return ds.Tables[0];
        }

        public resulMsgError guardarObjetivosRuta(List<InfoObjetivoRuta> objsrut)
        {
            resulMsgError resul = new resulMsgError(false, "");

            SqlCommand sqlcmd = new SqlCommand();

            //crear el objeto transaccion
            SqlTransaction transac = Session.getConexion().BeginTransaction("anuldoc");

            sqlcmd.CommandText = "spuObjetivosRuta";
            sqlcmd.CommandType = CommandType.StoredProcedure;
            sqlcmd.Connection = Session.getConexion();
            sqlcmd.Transaction = transac;

            sqlcmd.Parameters.Add("@ccod_itm", SqlDbType.Int);
            sqlcmd.Parameters.Add("@nobj_soles", SqlDbType.Decimal);
            sqlcmd.Parameters.Add("@nobj_cant", SqlDbType.Decimal);
            sqlcmd.Parameters.Add("@cpc_crea", SqlDbType.NVarChar, 50);
            sqlcmd.Parameters.Add("@cuser_crea", SqlDbType.Int);

            try
            {
                //valores que no cambian en cada registro
                sqlcmd.Parameters["@cpc_crea"].Value = Session.getComputerName();
                sqlcmd.Parameters["@cuser_crea"].Value = Session.getInfousuario().ccod_user;


                foreach (InfoObjetivoRuta objrut in objsrut)
                {
                    sqlcmd.Parameters["@ccod_itm"].Value = objrut.ccod_itm;
                    sqlcmd.Parameters["@nobj_soles"].Value = objrut.nobj_soles;
                    sqlcmd.Parameters["@nobj_cant"].Value = objrut.nobj_cant;
                    sqlcmd.ExecuteNonQuery();
                }
                transac.Commit();
                resul.resul = true;
                resul.message = "Se guardaron los cambios satisfactoriamente.";
            }
            catch (Exception ex)
            {
                transac.Rollback();
                resul.message = ex.Message;
            }
            return resul;
        }

        public DataTable consultaRuta(int ccod_ruta, int ccod_zona, int ccod_vend, String cnom_ruta, int flg_anulados)
        {
            SqlCommand sqlcmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter();
            DataSet ds = new DataSet();

            sqlcmd.CommandText = "spsConsultaRuta";
            sqlcmd.CommandType = CommandType.StoredProcedure;
            sqlcmd.Connection = Session.getConexion();

            sqlcmd.Parameters.Add("@ccod_ruta", SqlDbType.Int);
            sqlcmd.Parameters.Add("@ccod_zona", SqlDbType.Int);
            sqlcmd.Parameters.Add("@ccod_vend", SqlDbType.Int);
            sqlcmd.Parameters.Add("@cnom_ruta", SqlDbType.NVarChar, 25);
            sqlcmd.Parameters.Add("@flg_anulados", SqlDbType.Int);

            sqlcmd.Parameters["@ccod_ruta"].Value = ccod_ruta;
            sqlcmd.Parameters["@ccod_zona"].Value = ccod_zona;
            sqlcmd.Parameters["@ccod_vend"].Value = ccod_vend;
            sqlcmd.Parameters["@cnom_ruta"].Value = cnom_ruta;
            sqlcmd.Parameters["@flg_anulados"].Value = flg_anulados;

            da.SelectCommand = sqlcmd;
            da.Fill(ds);
            return ds.Tables[0];
        }

        public resulMsgError guardar(InfoRuta ruta)
        {
            resulMsgError resul = new resulMsgError(false, "");

            SqlCommand sqlcmd = new SqlCommand();
            sqlcmd.CommandText = "spiaRuta";
            sqlcmd.CommandType = CommandType.StoredProcedure;
            sqlcmd.Connection = Session.getConexion();

            sqlcmd.Parameters.Add("@ccod_ruta", SqlDbType.Int);
            sqlcmd.Parameters.Add("@cnom_ruta", SqlDbType.NVarChar, 25);
            sqlcmd.Parameters.Add("@ccod_zona", SqlDbType.Int);
            sqlcmd.Parameters.Add("@ccod_vend", SqlDbType.Int);
            sqlcmd.Parameters.Add("@cstatus", SqlDbType.NChar, 1);
            sqlcmd.Parameters.Add("@cpc_crea", SqlDbType.NVarChar, 50);
            sqlcmd.Parameters.Add("@cuser_crea", SqlDbType.Int);
            sqlcmd.Parameters.Add("@cmodo", SqlDbType.Int);

            sqlcmd.Parameters["@ccod_ruta"].Value = ruta.ccod_ruta;
            sqlcmd.Parameters["@cnom_ruta"].Value = ruta.cnom_ruta;
            sqlcmd.Parameters["@ccod_zona"].Value = ruta.ccod_zona;
            sqlcmd.Parameters["@ccod_vend"].Value = ruta.ccod_vend;
            sqlcmd.Parameters["@cstatus"].Value = ruta.cstatus;
            sqlcmd.Parameters["@cpc_crea"].Value = Session.getComputerName();
            sqlcmd.Parameters["@cuser_crea"].Value = Session.getInfousuario().ccod_user;
            sqlcmd.Parameters["@cmodo"].Value = ruta.cmodo;

            try
            {
                sqlcmd.ExecuteNonQuery();
                //verificamos el tipo de mensaje a mostrar
                if (ruta.cmodo == 3)
                {
                    resul.message = "Anulado satisfactoriamente";
                }
                else
                {
                    resul.message = "Se guardo satisfactoriamente";
                }
                resul.resul = true;
            }
            catch (Exception ex)
            {
                resul.message = ex.Message;
            }
            return resul;
        }
    }
}
